import { NextResponse } from "next/server";
import connect from "@/utils/mongodb";
import User from "@/model/User";
import { verificationDB } from "@/utils/verificationDB"; // 复用之前的验证码存储
import { sendResetPasswordCode } from "@/services/emailService"; // 新增邮件模板

export async function POST(request) {
  try {
    const { email } = await request.json();

    // 验证邮箱
    if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
      return NextResponse.json(
        { error: "请输入有效的邮箱地址" },
        { status: 400 }
      );
    }

    // 检查用户是否存在
    await connect();
    const user = await User.findOne({ email });
    if (!user) {
      // 出于安全，不提示"用户不存在"，仅返回通用信息
      return NextResponse.json({
        message: "若邮箱存在，验证码已发送"
      });
    }

    // 生成验证码（6位数字）
    const code = Math.floor(100000 + Math.random() * 900000).toString();
    const expires = Date.now() + 10 * 60 * 1000; // 10分钟有效期

    // 删除旧验证码
    await verificationDB.remove({ email, type: "reset-password" }, { multi: true });

    // 保存新验证码（标记类型为重置密码）
    await verificationDB.insert({
      email,
      code,
      expires,
      type: "reset-password" // 区分登录验证码
    });

    // 发送邮件
    await sendResetPasswordCode(email, user.name, code);

    return NextResponse.json({
      message: "若邮箱存在，验证码已发送（10分钟内有效）"
    });

  } catch (error) {
    console.error("发送重置验证码错误:", error);
    return NextResponse.json(
      { error: "发送验证码失败，请稍后再试" },
      { status: 500 }
    );
  }
}